import time
from concurrent.futures import ThreadPoolExecutor

import test_pb2_grpc,test_pb2
import grpc

# 1.实现远程调用的函数 继承自动生成的系统类，然后重写方法
class TestServiceServer(test_pb2_grpc.TestServiceServicer):
    def func1(self, request, context):
        '''
        远程调用函数func1
        :param request:请求数据
        :param context:包含请求的相关消息
        :return:远程函数返回的响应数据
        '''
        # 获取请求数据
        age = request.age
        scores = request.scores
        print(scores)
        print(age)

        # 创建响应数据对象
        resp = test_pb2.TestResponse()
        resp.data = 'lisisdgasg'
        resp.info.age=30
        resp.info.score =  80
        return resp

# 2. 服务器配置
def server():
    # 开启线程数量
    executor = ThreadPoolExecutor(max_workers=10)
    # 创建服务器对象
    server = grpc.server(executor)
    # 注册远程调用的函数
    test_pb2_grpc.add_TestServiceServicer_to_server(TestServiceServer(), server)
    # 监听端口
    server.add_insecure_port('127.0.0.1:8888')
    # 启动服务器
    server.start()
    while True: # 服务器非阻塞，代码执行完就会自动停止
        time.sleep(60*60*24)

if __name__ == '__main__':
    server()